iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
0
自我挑戰組

學習資料結構30天系列 第 15

[Data Structure][Graph] - Floyd Algorithm

  • 分享至 

  • xImage
  •  

前言

Short Path 就是Graph中所有可能連通起點連到終點的path中,加權值最小的path。

昨天介紹的Dijkstra's Algorithm,只能計算Graph中從某一個起點到其餘各點的最短距離。
如果要求出任兩個頂點或是所有頂點間的最短距離,就必須使用 Floyd Algorithm

Floyd-Warshall Algorithm

  • 用途 : 找出有向圖所有兩點之間的最短路徑。

  • 公式 : https://ithelp.ithome.com.tw/upload/images/20181029/20112438YPGugRKuGj.jpg

  • 如果原本i點到j點的距離比經由k點的距離更遠,則採用經由k點的新距離,否則不變。

  • 例子:
    https://ithelp.ithome.com.tw/upload/images/20181029/20112438q0g4QtqOGm.jpg

  • A⁻¹為Adjacency matrix,表示i點到j點的最短距離,其間不經由任何節點。

A⁻¹ 0 1 2
0 0 4 11
1 6 0 2
2 3 0
  • A°,經由頂點0的最短距離,其中2→1的距離已由∞更新成7
0 1 2
0 0 4 11
1 6 0 2
2 3 7 0
  • A¹,經由頂點1的最短距離,其中0→2的距離已由11更新成6。
0 1 2
0 0 4 6
1 6 0 2
2 3 7 0
  • A²,經由頂點2的最短距離,其中1→0的距離已由6更新成5。
0 1 2
0 0 4 6
1 5 0 2
2 3 7 0

=> 所有頂點間的最短路徑為A²所表示!

參考

細談資料結構 第六版
ISBN 978-986-312-014-8


上一篇
[Data Structure][Graph] - Dijkstra's Algorithm
下一篇
[Data Structure][Graph] - Topological Sorting
系列文
學習資料結構30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言